package models.msgs;

public class TaskCreator {
  static public String Join(String text) {
	String task="S_JOIN_";
	task+=text.substring(text.indexOf(" ")+1);
	return task;
  }
  
  static public String NewGame(String text) throws Exception {
	String task="S_NEWGAME_";
	String tmp;
	int ilosc_graczy;
	int ilosc_botow;
	text=text.substring(text.indexOf(" ")+1);
	tmp=text.substring(0, text.indexOf(" "));
	text=text.substring(text.indexOf(" ")+1);
	
	ilosc_graczy=Integer.parseInt(tmp);
	if(ilosc_graczy > 4 || ilosc_graczy < 2)
	  throw new Exception();
	
	tmp=text.substring(0, text.indexOf(" "));
	text=text.substring(text.indexOf(" ")+1);
	
	ilosc_botow=Integer.parseInt(tmp);
	if(ilosc_graczy < ilosc_botow || ilosc_botow<0)
	  throw new Exception();
	
	task+=ilosc_graczy+"_"+ilosc_botow;
	
	tmp=text.substring(0, text.indexOf(" "));// } catch(StringIndexOutOfBoundsException e) {}
	text=text.substring(text.indexOf(" ")+1);
	
	int czyHostGra=Integer.parseInt(tmp);
	if(czyHostGra!=0 && czyHostGra!=1)
	  throw new Exception();
	
	tmp=text.substring(0, text.indexOf(" "));
	text=text.substring(text.indexOf(" ")+1);
	
	int ilekasy=Integer.parseInt(tmp);
	if(ilekasy<100 && ilekasy>1000)
	  throw new Exception();
	
	try { text=text.substring(0, text.indexOf(" ")); } catch(StringIndexOutOfBoundsException e) {}
	
	int stawkaPoczatkowa=Integer.parseInt(text);
	if(stawkaPoczatkowa<1 && stawkaPoczatkowa>50)
	  throw new Exception();
	
	task+="_"+czyHostGra+"_"+ilekasy+"_"+stawkaPoczatkowa;
	
	return task;
  }
  
  static public String Wymiana(String text) throws Exception {
    String task="G_WYMIANA_";
    String cards="[";
    text+=" ";
    int numerWymienianejKarty;
	String tmp;
	boolean koniecDanych=false;
	int liczbaKartDoWymiany=0;
	
	if(text.replace(" ", "").equals("ChangeCards"))
	  return task+"0_[]";
	
	try {
	  while(koniecDanych==false) {
	    text=text.substring(text.indexOf(" ")+1);
        tmp=text.substring(0, text.indexOf(" "));
        numerWymienianejKarty=Integer.parseInt(tmp);
        if(numerWymienianejKarty<0 || numerWymienianejKarty>4) throw new NumberFormatException();
        cards+=Integer.parseInt(tmp)+";";
        liczbaKartDoWymiany++;
	  }
    }
	catch(StringIndexOutOfBoundsException e) {}
	if(liczbaKartDoWymiany>4) throw new Exception();
	
	return task+liczbaKartDoWymiany+"_"+cards+"]";
  }
  
  static public String Raise(String text) {
	String task="G_RAISE_";
	task+=Integer.parseInt(text.substring(text.indexOf(" ")+1));
	return task;
  }
}
